%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Definicin del tipo de documento.                                           %
% Posibles tipos de papel: a4paper, letterpaper, legalpapper                  %
% Posibles tamaos de letra: 10pt, 11pt, 12pt                                 %
% Posibles clases de documentos: article, report, book, slides                %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[a4paper,11pt]{article}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Los paquetes permiten ampliar las capacidades de LaTeX.                     %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Paquete para inclusin de graficos.
\usepackage{graphicx}

% Paquete para definir la codificacin del conjunto de caracteres usado
% (latin1 es ISO 8859-1).
\usepackage[latin1]{inputenc}

% Paquete para definir el idioma usado.
\usepackage[spanish]{babel}

\usepackage{listings}

% Hyphenation
\hyphenation{herra-mienta}

% Ttulo principal del documento.
\title{		\textbf{Trabajo Pr\'actico 2:\\Arquitecturas de Memoria}}

% Informacion sobre los autores.
\author{    Grupo \\\\
	    Agust\'in Mezzina, \textit{89637}         \\
            \texttt{ apmezzina@gmail.com }            \\
	    Marcelo Ruiz, \textit{85743}              \\
            \texttt{marceloruiz\_uba@yahoo.com.ar }   \\            
	    Ignacio Venini, \textit{85580}            \\
            \texttt{ karmican@gmail.com }     \\
            [2.5ex]
            \normalsize{1er. Cuatrimestre de 2011}                            \\
            \normalsize{66.20 Organizaci\'on de Computadoras}                 \\
            \normalsize{Facultad de Ingenier\'ia, Universidad de Buenos Aires}\\
       }
\date{\today}


\begin{document}
 
\maketitle

\thispagestyle{empty}

\begin{abstract}
En el presente informe se describen los m\'etodos y herramientas utilizadas para la resoluci\'on del Trabajo Pr\'actico 2 de la materia, el cual ten\'ia como objetivo la familiarizaci\'on con las herramientas de profiling para la estimaci\'on de par\'ametros de una memoria cache a partir de patrones de acceso. Se realiza una implementaci\'on de un suite de benchmarking de memorias cache.
\end{abstract}

\newpage
\section*{Informe}

\section{Introducci\'on}
En el presente informe se describe el suite de benchmarking desarrollado, sus componentes esenciales y los detalles de su funcionamiento. Se describe la manera de estimar los par\'ametros de la memoria cache analizada.

\section{M\'odulos Realizados}
El trabajo consta de los m\'odulos detallados a continuaci\'on:\\
TP2: Es el programa principal. Recibe por par\'ametros los datos de la cache a emular y realiza las corridas de los otros m\'odulos para deducir el tama\~no de bloque, n\'umero de v\'ias y tama\~no total de la cache.\\
TP2Block: Se usa para deducir el tama\~no del bloque de cache. No recibe par\'ametros.\\ 
TP2Size: Se usa para deducir el tama\~no total del cache. Recibe como par\'ametro el tama\~no de bloque.\\
TP2Ways: Se usa para deducir la cantidad de v\'ias del cache. Recibe como par\'ametro el tama\~no total de la cache.\\

\section{Detalle de funcionamiento de los m\'odulos}
Descripci\'on detallada el funcionamiento de cada m\'odulo: \\
\\
TP2Block: Consiste en un programa que declara un array de char y lo recorre por completo. Escribe un valor en cada posici\'on del array. El array es de un tama\~no muy grande para que supere el tama\~no de la cache. Luego de la corrida del m\'odulo se eval\'ua la cantidad de escrituras relizadas vs. la cantidad de misses de escritura. Se obtiene el tama\~no del bloque como escrituras totales / misses de escritura. El valor obtenido se aproxima a la potencia de 2 m\'as cercana y que sea mayor o igual que el cociente obtenido. \\
\\
TP2Size: Consiste en un programa que declara un array de char y lo recorre para escribirlo. A diferencia de TP2Block no accede a todas las posiciones del array sino que accede a posiciones separadas entre s\'i por la medida del tama\~no de un bloque de cache recibida por par\'ametro. Este m\'odulo se invoca varias veces desde el programa principal y en cada caso se eval\'ua la cantidad de misses de escritura obtenidos. Se comienza un ciclo supoiniendo que hay 2 bloques en total en la cache. En cada iteraci\'on se va duplicando el tama\~no total de bloques que se va suponiendo hay en cache. Cuando la cantidad de misses son mayores que la cantidad de bloques mas uno actualmente supuestos se termina el ciclo y se determina como cantidad de bloques totales al \'ultimo valor supuesto.
\\
TP2Ways: Consiste en un programa que declara un array de char y lo recorre para escribirlo. A diferencia de TP2Size no accede a las posiciones del array segun el tama\~no de bloque sino que accede a posiciones separadas entre s\'i por la medida del tama\~no total del cache recibida por par\'ametro. Este m\'odulo se invoca varias veces desde el programa principal y en cada caso se eval\'ua la tasa de misses de escritura obtenidos. Se comienza un ciclo accediendo a las posiciones de un array que lleguen hasta el doble del tama\~no total de la cache. En cada iteraci\'on se va duplicando las posiciones del array a las que se accede. Cuando la tasa de miss supera cierto umbral, se termina el ciclo y se determina como cantidad de v\'ias al \'ultimo valor antes de superar el umbral.

\newpage
\section{Casos de pueba e informe de resultados}
Screen shots con ejemplos de uso del programa\\
\\
Se muestra la versi\'on:\
\begin{figure}[!htp]
\begin{center}
\includegraphics[width=9cm,height=7cm]{version.png}
\end{center}
\end{figure}

Se muestra la ayuda:\
\begin{figure}[!htp]
\begin{center}
\includegraphics[width=9cm,height=7cm]{help.png}
\end{center}
\end{figure}

\newpage

Se ingresan p\'arametros incorrectos:\
\begin{figure}[!htp]
\begin{center}
\includegraphics[width=9cm,height=7cm]{params.png}
\end{center}
\end{figure}

Se ingresan p\'arametros correctos y el programa empieza a procesar:\
\begin{figure}[!htp]
\begin{center}
\includegraphics[width=9cm,height=7cm]{process.png}
\end{center}
\end{figure}

\newpage

El programa termina de procesar e imprime los resultados:\
\begin{figure}[!htp]
\begin{center}
\includegraphics[width=9cm,height=7cm]{run.png}
\end{center}
\end{figure}

\section{Contenido del CD entregado}
En el CD se encuentran las siguiente carpetas y archivos:\\
\\
TP2-1C-2011.pdf: enunciado del trabajo pr\'actico.\\
\\
Directorio fuente: archivos fuente de los m\'odulos del programa.\\
\\
Directorio bin: ejecutables para probar el TP.\\
\\
Directorio informe: archivos utilizado para la realizaci\'on de este informe en LATEX 

\section{Conclusi\'on}
En \'este trabajo pr\'actico hemos podido obtener algunas nociones del funcionamiento de los sistemas de memoria cache. Hemos obtenido conocimiento acerca de herramientas de profiling que nos permiten evaluar el comportamiento de nuestros programas. Estas herramientas nos permiten mejorar el desempe\~no de nuestras aplicaciones y detectar posibles problemas de performance.

\end{document}